https://cryptohack.org/courses/symmetric/aes1/
問了我們針對 AES 的最佳單密鑰攻擊的名稱是什麼?
答案是內文提到的 Biclique 攻擊(Biclique attack)。
crypto{Biclique}
https://cryptohack.org/courses/symmetric/aes2/
回顧一下上一篇文章說的AES加密過程~
AES 加密過程概覽:
從 128 位元的密鑰中派生出 11 個獨立的 128 位元「輪密鑰」,每個「輪密鑰」會在每一輪的 AddRoundKey 步驟中使用。
AddRoundKey - 將第一輪密鑰的字節與當前狀態的字節(State)進行 XOR 運算。
a) SubBytes - 根據查找表(「S-box」)將狀態(State)的每個字節替換為不同的字節。
b) ShiftRows - 狀態矩陣的最後三行進行轉置,分別移動一列、兩列或三列。
c) MixColumns - 對狀態矩陣的每一列進行矩陣乘法,將每列中的四個字節組合在一起。在最後一輪中,此步驟被省略。
d) AddRoundKey - 將當前輪密鑰的字節與狀態的字節進行 XOR 運算。
建議搭配圖片服用,方便理解。
題目給了我們一個檔案,當中包含兩個函數。
from Crypto.Util.number import *
def matrix2bytes(matrix):
""" Converts a 4x4 matrix into a 16-byte array. """
t=b""
for i in range(4):
for j in range(4):
t+=long_to_bytes(matrix[i][j])
return t
matrix = [
[99, 114, 121, 112],
[116, 111, 123, 105],
[110, 109, 97, 116],
[114, 105, 120, 125],
]
print(matrix2bytes(matrix))
之後就可以得到flag為
crypto{inmatrix}
wiki:
今天就先這樣,接下來的題目分別會是AES加密過程的步驟實踐。